1. Field of the Invention
The present invention relates to time-constrained data streaming transmission systems and methods. More specifically it relates to techniques providing seamless switching of multimedia streams.
2. Description of Prior Art
The task of providing interactive distributed multimedia services using large and powerful distributive video servers becomes very important with proliferation of the new generation Internet, e.g., Internet2. The Internet2 project addresses creation of a leading edge network capability for the national research community and development of a new generation of applications that fully exploit the capabilities of broadband networks. Very high bandwidth and bandwidth reservation will allow materials such as continuous digital video and audio to move from research use to much broader use that will include images, audio, and video in ways currently not possible.
Internet2 applications will be built using an emerging set of middleware and development tools that support these advanced applications. Among the most critical tasks is guaranteed availability, user-centric reservation and highly interactive control of widely distributed large video servers, such as video servers, mainframes, super computers, etc.
Current approach of delivery streams with large bandwidth relies on pre-scheduling of resources. It works well with mainframes using operating systems like MVS, where multiple tasks run preferably in batch mode, or specialized Video on Demand (VoD) servers, with a predetermined start of segments, separated with relatively long and predefined time intervals.
In such approaches, due to the batch scheduling at the primary server, large queuing delays may be experienced. All the while, the client remains idle, waiting for a response to its request from the primary server. This situation arises not only during the startup of a media session, but at practically every request for change in the data flow, e.g., fast forward, stop, continue, etc. Also, the delay time is not easily predictable and in some cases, is random even for the same type of requests. The presence of arbitrarily large delay during streaming represents a nuisance to clients and, this is one of the major reasons why mainframe-based video servers are not generally used as streaming servers on the Internet.
Video servers using OS2, Windows NT or UNIX operating systems, are typically less powerful, and may not provide as many large bandwidth streams as VoD type servers. Multitasking, multithreading and preemptive operating system features of those servers, allow necessary allocation of available resources and their availability at very short delay between the request and starting point of streaming data. As a result, data streaming applications may utilize servers interactively, starting the streaming process at arbitrary point at arbitrary location in the data stream, and receiving a practically immediate response.
There are attempts to modify VoD servers to make response time faster. One method is to provide larger number of video streams, so the interval between streams is negligible, e.g., a few seconds. This is quite an expensive approach, requiring either very powerful servers, or using a cluster of servers. One such method is demonstrated by a U.S. Pat. No. 5,737,747, which is based on using multiple video servers, linked to a cached disk storage subsystem. The disk storage subsystem is responsible for a pre-fetch and buffering of the data. However, this solution requires a close proximity of video servers, preventing their geographical distribution on the network.
U.S. Pat. No. 5,630,067 demonstrates another approach that exploits peer-to-peer architecture where each server holds a segment of the information. This approach is well suited to retrieving independent segments of information, but presents a problem when synchronizing of segments stored on different servers.
Still another mechanism is described in the U.S. Pat. No. 5,682,597 that employs an auxiliary server to store an initial portion of data satisfying data flow within the time interval between two adjacent VoD streams. The auxiliary server starts a data stream in response to VoD client request, and then the system switches the data stream to a main VoD server, where video streams are pre-scheduled in a staggered manner. As a result, the initial client request is satisfied practically immediately without waiting for the start of a new VoD stream. However, this approach eliminates only initial latency, and does not allow interactive control of the stream flow, such as start, stop, and browsing.
A primary server, such as a server capable of simultaneously streaming a large number of streams. A client explicitly connects to a primary server via a socket connection through which it places a request for the streaming of multimedia content or a streaming request. The primary server then decides whether it is capable and willing to serve the streaming request by performing tasks such as admission control, setting up resources, and scheduling the request. Because resources are limited, not all streaming requests may be accepted by a primary server.
The process of deciding whether or not a streaming request may be accepted by a particular primary server involves tasks of arbitrary and variable overheads, such as queuing the incoming request, determining its admissibility, and determining its schedulability. The processing of a successful request results in the establishment of a streaming connection from the primary server to the client.
The mainframes and super computers may be used as primary servers, however, the response of a primary server to a streaming request in any such system would experience arbitrarily large delay. Meanwhile, the client that placed the streaming request remains idle. When this situation arises before the startup of a streaming session, such delay does not represent a problem. During startup time the client has yet to acquire an expectation about the quality of service (QoS) over its streaming session). However, when this situation arises during a streaming session, such delay would now represent a nuisance as the client has by now acquired a QoS expectation over its streaming session. This nuisance would manifest itself at best as a disruption on the progress of the streaming session. For this reason, primary servers do not offload clients, as the presence of arbitrarily large delay is generally considered undesirable by clients. For similar reasons, client interactivity during a streaming session is often disabled or penalized.
Additionally, there is a need for migrating a streaming client from one server onto another server. It is desirable to seamlessly switch from one content at one server to another content at another server which may not be stored on the first server for any number of reasons. Dynamic reallocation of clients during exceptions provides better fault tolerance, e.g., a video server is scheduled to go down and another video server is known to be available. Similarly, the reallocation of some streams from one video server to another may be desirable to balance the overall system load.
Therefore, what is needed to increase overall reliability and availability of service is an adaptive mechanism simple enough for effective use in Web browsing systems, permitting a streaming client to be switched across various servers without losing the temporal progress and continuity of an ongoing session. Moreover, it would be desirable to provide a data streaming mechanism that requires no user intervention and that allows the migration of such streaming clients across wide area networks.
The present invention resolves the above described problems by providing a seamless switch enabling migration of a streaming client across servers. The switching of a streaming session is enabled at arbitrary points in a manner that appears seamless to the client with respect to the continuity and temporal progress of its streaming session.
The present invention makes it possible to switch a client across servers practically regardless of admision overhead. This is accomplished via the use of intermediary servers, referred to as auxiliary servers, and a client-based virtual socket as intermediary. This switch aspect of the present invention, hereinafter referred to as xe2x80x9chand-off signaling,xe2x80x9d allows a primary server to offload any of its current clients onto another server, referred to as xe2x80x9cthe target server.xe2x80x9d
Furthermore, the virtual socket is capable of phasing-in a new streaming connection while simultaneously phasing-out an old streaming connection, thereby preserving the temporal progress of the session. The virtual socket acts as a client-based intermediary between the client and one or more streaming servers, thus enabling a client application to establish a streaming connection with respect to content and not to end-party, i.e., server.
To do so, the client is augmented with communications software to allow it to transparently connect and reconnect between servers, setup buffering and signaling with each server without explicit application interaction. It will be understood by those skilled in the art that the present invention allows such clients to establish content-based connectivity as opposed to server-based connectivity.
Thus the present invention is a system that allows the migration of a streaming session from a primary server to a target server to be seamless via intermediary of an auxiliary server. Although in the preferred embodiment, the auxiliary server incurs smaller overheads when compared to those of a primary server, it will be understood by those skilled in the art that the properties of the method and system are independent of the ratio between overheads incurred on primary vs. auxiliary servers.
The auxiliary server provides important enhancements to streaming architectures not yet available today:
1. the auxiliary server provides a highly available streaming capability that may be used to assist a primary server such as a mainframe or video-on-demand server by offloading, possibly temporarily, a client from the primary server onto the auxiliary server and creating a window of increased resource availability at the primary server;
2. the auxiliary server creates a resource monitoring point with respect to the performance of multiple primary servers and their migration patterns so as to provide parameters on where, when, and how to migrate a client across primary servers and/or auxiliary servers;
3. the auxiliary server provides an insertion point that may be used for dynamic insertion of content fillers such as advertisements and previews during the migration of a client that may be used, for example, to enable an illusion of continuity over the streaming session with any such client; and
4. the auxiliary server provides a mechanism to migrate a client across multiple primary servers having unknown resource availability.
It is an object of the present invention to implement an auxiliary server that provides a highly available streaming capability used to assist a primary server, such as a mainframe or video-on-demand server, to temporarily offload a client currently engaged in a streaming session with the primary server onto the auxiliary server so as to create a window of increased resource availability at the primary server.
It is another object of this invention to use the auxiliary server to provide an insertion point that may be used for dynamic insertion of content fillers such as advertisements and previews during a switch so as to provide an illusion of temporal progress and continuity to a streaming client.
It is another object of this invention to use the auxiliary server to create a resource monitoring point with respect to the performance of primary servers so as to provide parameters on location, time and manner (where, when, and how) for client migration across primary and/or auxiliary servers.
It is yet another object of this invention to use the auxiliary server to provide a mechanism for client migration across multiple primary servers having unknown resource availability.
It is yet another object of this invention to use a signaling protocol between the servers and the client to ensure that the switch takes place only when it is possible to accomplish switching seamlessly, through the use of a redundant buffering scheme at the client.
The foregoing, together with other features and advantages of the present invention, will become more apparent when referring to the following specification, claims and accompanying drawings.